The present invention relates to a method and system for upgrading a software system operated on data processing means, and in particular, the present invention relates to a method and system for upgrading a software system by a plurality of software system versions.
Software and computer controlled applications often exhibit a high level of complexity. Nevertheless, the pace of development of new systems and software versions or releases requires a constant adaptation of a software controlled system to the newest standards. The adaptation of a system to a new software standard is carried out in a so called upgrade, which in a complex system may be considerably time consuming. In general, an upgrade consists of changing or updating parts of the software system by replacing program files or configuration files with newer ones and/or to run update programs to fully implement the changes. Especially, if an software system or operating system is updated from an older version to a more recent or newly released version, generally a short downtime of parts of the data processing means or the entire system is introduced. During a downtime, processing or access to files is halted.
An operator of a software controlled computer system may choose to upgrade the system each time a new software version becomes available or, especially in cases where an upgrade is expensive or time consuming, he may choose to upgrade the software system less frequently than new releases or upgrades of the software system are developed.
In the latter case an upgrade of the software system to a desired version may consist of a plurality of individual upgrade operations carried out in a sequence. However, if a plurality of individual upgrades is carried out in a sequence, since each upgrade introduces a short downtime, the total downtime for the upgrade process to the desired software system version may become long by adding downtimes for each single upgrade step. Since downtimes render the system inoperable for that period of time, even if short, they are undesired. For example, in real time applications as in a telecommunications network, subscribers cannot be served during a downtime, and thus the number or duration of downtimes should be kept at a minimum.
Further, upgrading a system by a plurality of sequentially released software system versions also involves repeating similar or identical activities for each upgrade step, adding to the time spent by an operator, thus increasing costs.
One generally known method to reduce the total downtime during an upgrade process is to develop a specifically tailored upgrade for upgrading the software system from a current software version to a desired software version, instead of updating the system sequentially with individual upgrades. So called direct upgrades allow to upgrade the system directly in one step, instead of a series of steps, and allow to reduce the number of downtimes to a single downtime. However, direct upgrades need to be developed separately in addition to regular upgrades. The development of direct upgrades involves the redesign of already existing upgrades and merging them to achieve a tailored one-step upgrade, which is inefficient. Moreover, a large number of direct upgrades needs to be developed, one for each possible upgrade path, i.e., from an arbitrary software system version to any other arbitrary software system version. For these reasons step by step upgrades and direct upgrades are inconvenient and expensive and alternative methods are desired.
It is therefore object of the invention to provide a method and system for flexibly upgrading a software system at reduced costs.
This object of the invention is solved by the features of claims 1 and 10.
The inventive method allows to combine upgrade tasks identical for individual upgrades to an upgrade framework and allows to execute a plurality of upgrade contents in a sequence, each corresponding to a single upgrade from a particular software system version to another, thus being able to upgrade the system from an arbitrary current version to any desired newer software system version in one upgrade operation. The inventive method thus allows to combine regular upgrades for a software system to a one-step upgrade operation without the need of any double development.
The apparatus according to the invention allows upgrading a software system operating with a plurality of upgrade contents, each of the upgrade contents for upgrading the software system from one software system version to a subsequently released software system version.
The system may be operating in a real time environment.
Advantageously, the upgrade can be carried out with a single downtime by employing a source system, a target system and switching means for switching communication links to external devices between the source system and the target system.
The inventive method advantageously allows to upgrade a software system on data processing means operating in a real-time environment. The source system operating based on a software system version before the upgrade process and the target system arranged for operating using the upgraded software system are provided and allow that the software system is upgraded to the desired software system version on the target system while the source system is still operable with the software system version before the upgrade process. Advantageously, this allows to switch communication links from the source system to the target system in one step after the upgrade contents are executed. Thus, a software system can be upgraded with a single downtime.
Further, the inventive method advantageously allows to upgrade static data, the static data being data base contents or any other data before the upgrade process and/or upgrading dynamic data corresponding to events occurring during the upgrade process. This provides advantages especially in a real-time environment.
Each upgrade content may at least comprise static tasks for upgrading static data. An upgrade content may also comprise dynamic tasks for upgrading dynamic data. The static tasks of each upgrade content are sequentially applied to the static data and the dynamic data are sequentially processed by dynamic tasks of each upgrade content and the updated dynamic data are introduced into the static data after the upgrade of the static data has been completed. This assures that events occurring during the upgrade are appropriately adapted to the new software system version and may be applied to the static data, e.g. data base contents.
The upgrade framework may also comprise tasks for forwarding dynamic data between dynamic tasks of sequential upgrade contents. This allows that the in a real-time environment continuously occurring events are supplied to a subsequent upgrade content after being processed by a previous upgrade content.
The upgrade framework may at least comprise dumping data bases or contents of data storage means from the source system to the target system and initializing the logging of dynamic data in an event log. Thus the number of tasks of the upgrade contents can be reduced to a minimum.
The upgrade process may be halted after the execution of each individual upgrade content allowing greater flexibility, e.g. if intermediate testing of the system during the upgrade is desired.
Other advantages of the invention become apparent with further dependent claims.